package com.itheima.string;

/**
 * 问题：
 *
 *   System.out.print("用toCharArray方法把字符串转换成字符数组，再遍历字符数组: ");
 *         char[] chars = s.toCharArray();
 *         for (int i = 0; i < chars.length; i++) {
 *             System.out.println(chars[i]);
 *         }
 *         //依旧是引用类型，chars存放的是堆内存地址,所以可以理解为创建了一个char类型的对象，但是没有用char[] s1 = new char[3];的形式去调用构造器吗？
 *
 */
public class StringDemo2 {
    public static void main(String[] args) {
        System.out.println(new Object());
        // 目标：快速熟悉String提供的处理字符串的常用方法。
        String s = "黑马Java";
        // 1、获取字符串的长度 public int length()
        System.out.println(s.length());

        // 2、提取字符串中某个索引位置处的字符并返回 public char charAt(int index)
        char c = s.charAt(1);
        System.out.println(c);

        // 字符串的遍历
        System.out.print("遍历字符串，用charAt方法提取所有字符串，然后输出: ");
        for (int i = 0; i < s.length(); i++) {
            // i = 0 1 2 3 4 5
            char ch = s.charAt(i);
            System.out.print(ch+" ");
        }

        System.out.println();
        System.out.println("-------------------");

        // 3、把字符串转换成字符数组，再进行遍历  public char[] toCharArray()：
        System.out.print("用toCharArray方法把字符串转换成字符数组，再遍历字符数组: ");
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        //依旧是引用类型，chars存放的是堆内存地址,所以可以理解为创建了一个char类型的对象，但是没有用char[] s1 = new char[3];的形式去调用构造器吗？
        System.out.println("chars是： "+chars);

        System.out.println("-------------------");

        // 4、判断字符串内容，内容一样就返回true   public boolean equals(Object anObject)
        System.out.println("用equals方法判断字符串内容 ：");
        String s1 = new String("黑马");
        String s2 = new String("黑马");
        System.out.println("因为都是用new 构造器出来的string对象，所以是存在堆内存的,==比较的是地址值：" + (s1 == s2)); // false
        System.out.println(s1.equals(s2)); // true

        System.out.println("========");

        String m3 = "和宝汁吵架，我很烦";
        String m4 = "和宝汁吵架，我很烦";
        System.out.println("这次是直接用双引号方式创建字符串对象,那就是用的同一个字符串对象: "+(m3==m4)); //true
        System.out.println(m3.equals(m4));  //true

        System.out.println("-------------------");

        // 5、忽略大小写比较字符串内容  public boolean equalsIgnoreCase(String anotherString)
        String c1 = "34AeFG";
        String c2 = "34aEfg";
        System.out.println("用equals方法判断字符串内容: "+c1.equals(c2)); // false
        System.out.println("用equalsIgnoreCase方法忽略大小写后比较： "+c1.equalsIgnoreCase(c2)); // true

        System.out.println("-------------------");


        // 6、根据开始和结束索引截取字符串内容 (包前不包后的)  public String substring(int beginIndex, int endIndex)
        String s3 = "Java是最好的编程语言之一";
        String rs = s3.substring(0, 8);
        System.out.println("用substring方法截取字符串0-8:"+rs);

        System.out.println("-------------------");

        // 7、从当前索引位置一直截取到字符串的末尾  public String substring(int beginIndex)
        String rs2 = s3.substring(5);
        System.out.println("用substring方法截取字符串： "+rs2);

        System.out.println("-------------------");

        // 8、把字符串中的某个内容替换成新内容，并返回新的字符串对象给我们 public String replace(CharSequence target, CharSequence replacement)
        String info = "这个电影简直是个垃圾，垃圾电影！！";
        String rs3 = info.replace("垃圾", "**");
        System.out.println("用replace方法替换字符串的某些内容： "+rs3);

        System.out.println("-------------------");

        // 9、判断字符串中是否包含某个关键字 public boolean contains(CharSequence s)
        String info2 = "Java是最好的编程语言之一，我爱Java,Java不爱我！";
        System.out.println(info2.contains("Java"));
        System.out.println(info2.contains("java"));
        System.out.println(info2.contains("Java2"));

        System.out.println("-------------------");

        // 10、判断字符串是否以某个字符串开头。 public boolean startsWith(String prefix)
        String rs4 = "张三丰";
        System.out.println(rs4.startsWith("张"));
        System.out.println(rs4.startsWith("张三"));
        System.out.println(rs4.startsWith("张三2"));

        System.out.println("-------------------");

        // 11、把字符串按照某个指定内容分割成多个字符串，放到一个字符串数组中返回给我们 public String[] split(String regex)
        String rs5 = "张无忌,周芷若,殷素素,赵敏";
        String[] names = rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}
